package jp.co.nes.awssupport.common.bean;

import java.math.BigDecimal;
import java.time.YearMonth;
import java.util.Date;
import java.util.List;

/**
 * ご利用明細です。
 */
public class UsageDetailsBean extends BaseBean {

    /** serialVersionUID */
    private static final long serialVersionUID = 1L;

    /** アカウントID。exMonthlyCompiledBillingBeansを特定のアカウントIDのリストに限定している場合に使用する */
    private String accountId;

    /** 年月。exMonthlyCompiledBillingBeansを特定の年月のリストに限定している場合に使用する */
    private YearMonth yearMonth;

    /** 作成日付 */
    private Date publishDate;

    /** 件名 */
    private String documentTitle;

    /** 郵便番号 */
    private String postalCode;

    /** 住所1 */
    private String address1;

    /** 住所2 */
    private String address2;

    /** 企業名 */
    private String company;

    /** 部署 */
    private String department;

    /** 役職 */
    private String title;

    /** 担当者名 */
    private String name;

    private BigDecimal rate;

    /** 従量利用分明細リスト */
    private List<MonthlyCompiledBillingBean> monthlyCompiledBillingBeans;

    /** リザーブド購入分明細リスト */
    private List<MonthlyCompiledBillingBean> monthlyCompiledBillingBeansOfReserved;

    /** その他(ドメイン購入分など)明細リスト */
    private List<MonthlyCompiledBillingBean> monthlyCompiledBillingBeansOfOther;

    /** 小計(税抜) */
    private long sumAmount1;

    /** キャンペーン適用リスト */
    private List<CampaignAssignedBean> campaignAssignedList;

    /** クレジット適用額 */
    private long creditCouponAmount;

    /** 雑費リスト */
    private List<MiscellaneousExpensesAssignedBean> miscellaneousExpensesAssignedList;

    /** プレミアムサポート適用対象額 */
    private long premiumSupportTargetAmount;

    /** プレミアムサポート適用額 */
    private long premiumSupportAmount;

    /** ご使用料合計(税抜) */
    private long sumAmount2;

    /** クレジット適用額存在フラグ */
    private boolean isCreditCouponAmountExist = false;

    /** プレミアムサポート適用額存在フラグ */
    private boolean isPremiumSupportAmountExist = false;;

    /**
     * アカウントIDを返却します。
     *
     * @return アカウントID
     */
    public String getAccountId() {
        return accountId;
    }

    /**
     * アカウントIDを設定します。
     *
     * @param accountId アカウントID
     */
    public void setAccountId(String accountId) {
        this.accountId = accountId;
    }

    /**
     * 年月を返却します。
     *
     * @return 年月
     */
    public YearMonth getYearMonth() {
        return yearMonth;
    }

    /**
     * 年月を返却します。
     *
     * @param yearMonth 年月
     */
    public void setYearMonth(YearMonth yearMonth) {
        this.yearMonth = yearMonth;
    }

    /**
     * 作成日付を返却します。
     *
     * @return 作成日付
     */
    public Date getPublishDate() {
        return publishDate;
    }

    /**
     * 作成日付を設定します。
     *
     * @param publishDate 作成日付
     */
    public void setPublishDate(Date publishDate) {
        this.publishDate = publishDate;
    }

    /**
     * 件名を返却します。
     *
     * @return 件名
     */
    public String getDocumentTitle() {
        return documentTitle;
    }

    /**
     * 件名を設定します。
     *
     * @param documentTitle 件名
     */
    public void setDocumentTitle(String documentTitle) {
        this.documentTitle = documentTitle;
    }

    /**
     * 郵便番号を返却します。
     *
     * @return 郵便番号
     */
    public String getPostalCode() {
        return postalCode;
    }

    /**
     * 郵便番号を設定します。
     *
     * @param postalCode 郵便番号
     */
    public void setPostalCode(String postalCode) {
        this.postalCode = postalCode;
    }

    /**
     * 住所1を返却します。
     *
     * @return 住所1
     */
    public String getAddress1() {
        return address1;
    }

    /**
     * 住所1を設定します。
     *
     * @param address1 住所1
     */
    public void setAddress1(String address1) {
        this.address1 = address1;
    }

    /**
     * 住所2を返却します。
     *
     * @return 住所2
     */
    public String getAddress2() {
        return address2;
    }

    /**
     * 住所2を設定します。
     *
     * @param address2 住所2
     */
    public void setAddress2(String address2) {
        this.address2 = address2;
    }

    /**
     * 企業名を返却します。
     *
     * @return 企業名
     */
    public String getCompany() {
        return company;
    }

    /**
     * 企業名を設定します。
     *
     * @param company 企業名
     */
    public void setCompany(String company) {
        this.company = company;
    }

    /**
     * 部署を返却します。
     *
     * @return 部署
     */
    public String getDepartment() {
        return department;
    }

    /**
     * 部署を設定します。
     *
     * @param department 部署
     */
    public void setDepartment(String department) {
        this.department = department;
    }

    /**
     * 役職を返却します。
     *
     * @return 役職
     */
    public String getTitle() {
        return title;
    }

    /**
     * 役職を設定します。
     *
     * @param title 役職
     */
    public void setTitle(String title) {
        this.title = title;
    }

    /**
     * 担当者名を返却します。
     *
     * @return 担当者名
     */
    public String getName() {
        return name;
    }

    /**
     * 担当者名を設定します。
     *
     * @param name 担当者名
     */
    public void setName(String name) {
        this.name = name;
    }

    public BigDecimal getRate() {
        return rate;
    }

    public void setRate(BigDecimal rate) {
        this.rate = rate;
    }

    /**
     * 従量利用分明細リストを返却します。
     *
     * @return 従量利用分明細リスト
     */
    public List<MonthlyCompiledBillingBean> getMonthlyCompiledBillingBeans() {
        return monthlyCompiledBillingBeans;
    }

    /**
     * 従量利用分明細リストを設定します。
     *
     * @param monthlyCompiledBillingBeans 従量利用分明細リスト
     */
    public void setMonthlyCompiledBillingBeans(List<MonthlyCompiledBillingBean> monthlyCompiledBillingBeans) {
        this.monthlyCompiledBillingBeans = monthlyCompiledBillingBeans;
    }

    /**
     * リザーブド購入分明細リストを返却します。
     *
     * @return リザーブド購入分明細リスト
     */
    public List<MonthlyCompiledBillingBean> getMonthlyCompiledBillingBeansOfReserved() {
        return monthlyCompiledBillingBeansOfReserved;
    }

    /**
     * リザーブド購入分明細リストを設定します。
     *
     * @param monthlyCompiledBillingBeansOfReserved リザーブド購入分明細リスト
     */
    public void setMonthlyCompiledBillingBeansOfReserved(
            List<MonthlyCompiledBillingBean> monthlyCompiledBillingBeansOfReserved) {
        this.monthlyCompiledBillingBeansOfReserved = monthlyCompiledBillingBeansOfReserved;
    }

    /**
     * その他(ドメイン購入分など)明細リストを返却します。
     *
     * @return その他(ドメイン購入分など)明細リスト
     */
    public List<MonthlyCompiledBillingBean> getMonthlyCompiledBillingBeansOfOther() {
        return monthlyCompiledBillingBeansOfOther;
    }

    /**
     * その他(ドメイン購入分など)明細リストを設定します。
     *
     * @param monthlyCompiledBillingBeansOfOther その他(ドメイン購入分など)明細リスト
     */
    public void setMonthlyCompiledBillingBeansOfOther(
            List<MonthlyCompiledBillingBean> monthlyCompiledBillingBeansOfOther) {
        this.monthlyCompiledBillingBeansOfOther = monthlyCompiledBillingBeansOfOther;
    }

    /**
     * 小計(税抜)を返却します。
     *
     * @return 小計(税抜)
     */
    public long getSumAmount1() {
        return sumAmount1;
    }

    /**
     * 小計(税抜)を設定します。
     *
     * @param sumAmount1 小計(税抜)
     */
    public void setSumAmount1(long sumAmount1) {
        this.sumAmount1 = sumAmount1;
    }

    /**
     * キャンペーン適用リストを返却します。
     *
     * @return キャンペーン適用リスト
     */
    public List<CampaignAssignedBean> getCampaignAssignedList() {
        return campaignAssignedList;
    }

    /**
     * キャンペーン適用リストを設定します。
     *
     * @param campaignAssignedList キャンペーン適用リスト
     */
    public void setCampaignAssignedList(List<CampaignAssignedBean> campaignAssignedList) {
        this.campaignAssignedList = campaignAssignedList;
    }

    /**
     * クレジット適用額を返却します。
     *
     * @return クレジット適用額
     */
    public long getCreditCouponAmount() {
        return creditCouponAmount;
    }

    /**
     * クレジット適用額を設定します。
     *
     * @param creditCouponAmount クレジット適用額
     */
    public void setCreditCouponAmount(long creditCouponAmount) {
        this.creditCouponAmount = creditCouponAmount;
    }

    /**
     * 雑費リストを返却します。
     *
     * @return 雑費リスト
     */
    public List<MiscellaneousExpensesAssignedBean> getMiscellaneousExpensesAssignedList() {
        return miscellaneousExpensesAssignedList;
    }

    /**
     * 雑費リストを設定します。
     *
     * @param miscellaneousExpensesAssignedList 雑費リスト
     */
    public void setMiscellaneousExpensesAssignedList(
            List<MiscellaneousExpensesAssignedBean> miscellaneousExpensesAssignedList) {
        this.miscellaneousExpensesAssignedList = miscellaneousExpensesAssignedList;
    }

    /**
     * プレミアムサポート適用対象額を返却します。
     *
     * @return プレミアムサポート適用対象額
     */
    public long getPremiumSupportTargetAmount() {
        return premiumSupportTargetAmount;
    }

    /**
     * プレミアムサポート適用対象額を設定します。
     *
     * @param premiumSupportTargetAmount プレミアムサポート適用対象額
     */
    public void setPremiumSupportTargetAmount(long premiumSupportTargetAmount) {
        this.premiumSupportTargetAmount = premiumSupportTargetAmount;
    }

    /**
     * プレミアムサポート適用額を返却します。
     *
     * @return プレミアムサポート適用額
     */
    public long getPremiumSupportAmount() {
        return premiumSupportAmount;
    }

    /**
     * プレミアムサポート適用額を設定します。
     *
     * @param premiumSupportAmount プレミアムサポート適用額
     */
    public void setPremiumSupportAmount(long premiumSupportAmount) {
        this.premiumSupportAmount = premiumSupportAmount;
    }

    /**
     * ご使用料合計(税抜)を返却します。
     *
     * @return ご使用料合計(税抜)
     */
    public long getSumAmount2() {
        return sumAmount2;
    }

    /**
     * ご使用料合計(税抜)を設定します。
     *
     * @param sumAmount2 ご使用料合計(税抜)
     */
    public void setSumAmount2(long sumAmount2) {
        this.sumAmount2 = sumAmount2;
    }

    /**
     * クレジット適用額存在フラグを返却します。
     *
     * @return クレジット適用額存在フラグ
     */
    public boolean isCreditCouponAmountExist() {
        return isCreditCouponAmountExist;
    }

    /**
     * クレジット適用額存在フラグを設定します。
     *
     * @param isCreditCouponAmountExist true: 存在、false: 存在しない。
     */
    public void setCreditCouponAmountExist(boolean isCreditCouponAmountExist) {
        this.isCreditCouponAmountExist = isCreditCouponAmountExist;
    }

    /**
     * プレミアムサポート適用額存在フラグを返却します。
     *
     * @return プレミアムサポート適用額存在フラグ
     */
    public boolean isPremiumSupportAmountExist() {
        return isPremiumSupportAmountExist;
    }

    /**
     * プレミアムサポート適用額存在フラグを設定します。
     *
     * @param isPremiumSupportAmountExist true: 存在、false: 存在しない。
     */
    public void setPremiumSupportAmountExist(boolean isPremiumSupportAmountExist) {
        this.isPremiumSupportAmountExist = isPremiumSupportAmountExist;
    }
}
